﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SoftHotel.Models;
using System.Data.SqlClient;
using System.Web.Mvc;
using System.Data;

namespace SoftHotel.Models
{
    public class NotaCreditoDAO : Controller
    {
        //
        // GET: /NotaCreditoDAO/
        public List<NotaCreditoModel> notacreditos = new List<NotaCreditoModel>() { };
        public List<NotaCreditoModel> ncbuscadis = new List<NotaCreditoModel>() { };
        private Conexion conexionBD = new Conexion();

        public List<NotaCreditoModel> buscar(NotaCreditoModel producto)
        {
            string consulta = "";
            string datos = "";
            int x;
            NotaCreditoDAO consultor = new NotaCreditoDAO();
            //conexionBD.AbrirConexion();
            consulta = "SELECT A.idDocumentoVenta, B.numDoc, B.nombres, B.apellidoPaterno, B.tipoDoc, B.apellidoMaterno FROM DocumentoVenta A, Cliente B WHERE 1=1 and A.numDocID = B.numDoc and B.nombres is not NULL ";
            if (producto.tipoDoc != null)
            {
                x = consultor.buscarEstado(producto.tipoDoc);
                consulta += " and B.tipoDoc = " + x;
            }
            if (producto.ndocumento != null)
            {
                consulta += " and B.numDoc LIKE '%" + producto.ndocumento + "%'";
            }
            if (producto.cNombre != null)
            {
                consulta += " and B.nombres LIKE '%" + producto.cNombre + "%'";
            }
            if (producto.cApellido != null)
            {
                consulta += " and B.apellidoPaterno LIKE '%" + producto.cApellido + "%'";
                consulta += " and B.apellidoMaterno LIKE '%" + producto.cApellido + "%'";
            }

            SqlDataReader dr = conexionBD.EjecutarReader(consulta);
            ncbuscadis.Clear();
            while (dr != null && dr.Read())
            {
                NotaCreditoModel busquedax = new NotaCreditoModel();

                busquedax.ndocumentoventa = dr["idDocumentoVenta"].ToString();
                busquedax.ndocumento = dr["numDoc"].ToString();
                datos = consultor.obtenerDatos(Int32.Parse(dr["tipoDoc"].ToString()));
                busquedax.tipoDoc = datos;
                busquedax.cNombre = dr["nombres"].ToString();
                busquedax.cApellido = dr["apellidoPaterno"].ToString() + " " + dr["apellidoMaterno"].ToString();                                                
                ncbuscadis.Add(busquedax);
            }

            if (producto.cNombre == null && producto.cApellido == null)
            {
                consulta = "SELECT A.idDocumentoVenta, B.numDoc, B.razonsocial, B.tipoDoc FROM DocumentoVenta A, Cliente B WHERE 1=1 and A.numDocID = B.numDoc and B.razonsocial is not NULL";
                SqlDataReader dr1 = conexionBD.EjecutarReader(consulta);                
                while (dr1 != null && dr1.Read())
                {
                    NotaCreditoModel busquedax = new NotaCreditoModel();
                    busquedax.ndocumentoventa = dr1["idDocumentoVenta"].ToString();
                    busquedax.ndocumento = dr1["numDoc"].ToString();
                    datos = consultor.obtenerDatos(Int32.Parse(dr1["tipoDoc"].ToString()));
                    busquedax.tipoDoc = datos;
                    busquedax.cNombre = dr1["razonsocial"].ToString();
                    busquedax.cApellido = "(Empresa)";
                    ncbuscadis.Add(busquedax);
                }
            }
            
            return ncbuscadis;
        }
        public NotaCreditoModel mostrar(NotaCreditoModel prod)
        {
            
            string consulta = "";
            string departamento = "";
            string provincia = "";
            consulta = "SELECT Sede.nombre, Sede.direccion, Sede.departamento, Sede.provincia, Sede.telefono FROM Sede, DocumentoVenta, DetalleReserva, Ambiente WHERE DocumentoVenta.idReserva = DetalleReserva.idReserva and DetalleReserva.idAmbiente = Ambiente.idAmbiente and Ambiente.idSede = Sede.idSede and DocumentoVenta.idDocumentoVenta = ";
            prod.ndocumentoventa=prod.ndocumentoventa.Remove(prod.ndocumentoventa.IndexOf(","));
            consulta += prod.ndocumentoventa;
            SqlDataReader dr = conexionBD.EjecutarReader(consulta);
            while (dr != null && dr.Read())
            {
                prod.nomsede = dr["nombre"].ToString();
                prod.direcsede = dr["direccion"].ToString();
                departamento = obtenerDatos(Int32.Parse(dr["departamento"].ToString()));
                provincia = obtenerDatos(Int32.Parse(dr["provincia"].ToString()));
                prod.ubicasede = departamento + ", " + provincia;
                prod.telsede = dr["telefono"].ToString();                
            }
            
            return prod;

        }
        public int buscarEstado(string estado)
        {
            int x = 0;
            string query = "select * from Parametro where valor = '" + estado + "'";
            SqlDataReader dr2 = conexionBD.EjecutarReader(query);
            if (dr2 != null && dr2.Read())
            {
                x = Int32.Parse(dr2[0].ToString());
            }
            dr2.Close();
            return x;
        }
        public string obtenerDatos(int x)
        {
            string datos = "";
            //conexionBD.AbrirConexion();//mare xurrevicky
            string query = "SELECT valor FROM Parametro WHERE idParametro =" + x;
            SqlDataReader dr3 = conexionBD.EjecutarReader(query);
            if (dr3 != null && dr3.Read())
            {
                datos = dr3["valor"].ToString();
            }
            dr3.Close();

            return datos;
        }
        public int buscarCategoria(string categoria)
        {
            int x = 0;
            string query = "select * from Parametro where valor = '" + categoria + "'";
            SqlDataReader dr1 = conexionBD.EjecutarReader(query);
            if (dr1 != null && dr1.Read())
            {
                x = Int32.Parse(dr1[0].ToString());
            }
            dr1.Close();
            return x;
        }
        public void insertar(NotaCreditoModel prod)
        {
            string consulta = "";
            //conexionBD.AbrirConexion();
            
                                
                DateTime now1 = DateTime.Now;
                string now = String.Format("{0:d/M/yyyy HH:mm:ss}", now1);

                consulta = "Insert into NotaCredito  (idDocumentoVenta, fechaEmision, estado, numNotaCredito, montoTotal, moneda)" +
                "values (@dv, @now, @est, @nota, @monto, @moneda )";
                SqlCommand command = conexionBD.connection.CreateCommand();
                command.CommandText = consulta;
                command.Parameters.Add("@dv", SqlDbType.Int).Value = prod.ndocumentoventa;
                command.Parameters.Add("@now", SqlDbType.DateTime).Value = now;
                command.Parameters.Add("@est", SqlDbType.Int).Value = 26;
                command.Parameters.Add("@nota", SqlDbType.VarChar,20).Value = "NOCR" +prod.ndocumentoventa;
                command.Parameters.Add("@monto", SqlDbType.Decimal).Value = prod.monto;
                command.Parameters.Add("@moneda", SqlDbType.Int).Value = 74;

                //"values ('" + prod.descripcion + "','" + cat + "','" + est + "','" + now + "','" + now + "')";
                conexionBD.EjecutarComando2(command);
            
            //conexionBD.CerrarConexion();
        }


    }
}
